home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / utils / sound / players / os2 / sound242 / play.asm < prev    next >
Encoding:
Assembly Source File  |  1992-08-31  |  1.0 KB  |  67 lines

  1.     .MODEL  LARGE,PASCAL
  2.     .CODE
  3.     .radix    16
  4.     .286
  5. ;    File    Play.asm
  6. ;    author    Paul van Keep (CIS id: 75170,1045)
  7. ;    (NC)Not Copyrighted by the Frobozz Magic Software Company
  8. ;
  9. ;    Sound sample play code
  10. ;    Works by programming timer 2 in mode 2
  11. ;    Generates 22000Hz carrier with square wave
  12. ;
  13.  
  14.  
  15. PLAY    PROC    uses ds si, dat:PTR, len:WORD, frq:BYTE
  16.     lds    si, dat
  17.     mov    cx, len
  18.     mov    bl, frq
  19.     mov    dl, 1
  20.     in    al, 21
  21.     or    al, 1
  22.     out    21, al
  23.     mov    al, 98
  24.     out    43, al
  25.     xor    al, al
  26.     out    42, al
  27.     in    al, 61
  28.     mov    dh, al            ; save contents of 61
  29.     or    al, 1
  30.     out    61, al            ; open speaker
  31.     jmp    next_cycle
  32. close_speaker:
  33.     mov    bh, ah
  34.     mov    al, 1
  35.     out    61, al
  36. wait_timer:
  37.     in    al, 42
  38.     cmp    al, 1A
  39.     jb    next_cycle
  40.     cmp    al, bh
  41.     ja    wait_timer
  42.     xor    bh, bh
  43.     mov    al, 3
  44.     out    61, al
  45.     jmp    wait_timer
  46. next_cycle:
  47.     mov    al, 50
  48.     out    42, al            ; restart timer
  49.     dec    dl
  50.     jnz    close_speaker
  51.     mov    dl, bl
  52.     lodsb
  53.     add    al, 4
  54.     shr    al, 1
  55.     shr    al, 1
  56.     mov    ah, 50
  57.     sub    ah, al
  58.     loop    close_speaker
  59.     in    al, 21
  60.     and    al, 0fe
  61.     out    21, al
  62.     mov    al, dh
  63.     out    61, al
  64.     ret
  65. PLAY    ENDP
  66.     end
  67.